package com.jd.tuning.jvm.jvm.methodInline;

import java.util.Random;

/*
 * 编译器优化
  * 方法内联
  *
  *  -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining
  *  打印内联详情
  *
 */
public class InlineTest2 {


    public static void main(String[] args) {
        long cost=compute();
        //方法内联  386ms   add1 12bytes add2: 4byte
        // -XX:+UnlockDiagnosticVMOptions -XX:+PrintInlining   -XX:FreqInlineSize=1 （热点方法字节数超过不内连） 514 ms
        System.out.println("花费了"+cost);
    }

    private static long compute() {
        long start=System.currentTimeMillis();
        int result=0;
        Random random=new Random();
        for (int i=0;i<10000000;i++){
            int a=random.nextInt();
            int b=random.nextInt();
            int c=random.nextInt();
            int d=random.nextInt();
            result=add1(a,b,c,d);
        }
        long end=System.currentTimeMillis();
        return end-start;
    }

    private static  int add1(int x1,int x2,int x3,int x4){
        return add2(x1,x2)+add2(x3,x4);
    }

    private static  int add2(int x1,int x2){
        return x1+x2;
    }

}
